22 research outputs found
EDITORIAL
This book contains biographies of Jawaharlal Nebru and Rajya Sabhaxi, 139 p.; 23 c
Crowdsmelling: The use of collective knowledge in code smells detection
Code smells are seen as major source of technical debt and, as such, should
be detected and removed. However, researchers argue that the subjectiveness of
the code smells detection process is a major hindrance to mitigate the problem
of smells-infected code. We proposed the crowdsmelling approach based on
supervised machine learning techniques, where the wisdom of the crowd (of
software developers) is used to collectively calibrate code smells detection
algorithms, thereby lessening the subjectivity issue. This paper presents the
results of a validation experiment for the crowdsmelling approach. In the
context of three consecutive years of a Software Engineering course, a total
"crowd" of around a hundred teams, with an average of three members each,
classified the presence of 3 code smells (Long Method, God Class, and Feature
Envy) in Java source code. These classifications were the basis of the oracles
used for training six machine learning algorithms. Over one hundred models were
generated and evaluated to determine which machine learning algorithms had the
best performance in detecting each of the aforementioned code smells. Good
performances were obtained for God Class detection (ROC=0.896 for Naive Bayes)
and Long Method detection (ROC=0.870 for AdaBoostM1), but much lower for
Feature Envy (ROC=0.570 for Random Forrest). Obtained results suggest that
crowdsmelling is a feasible approach for the detection of code smells, but
further validation experiments are required to cover more code smells and to
increase external validity
Code smells detection and visualization: A systematic literature review
Context: Code smells (CS) tend to compromise software quality and also demand
more effort by developers to maintain and evolve the application throughout its
life-cycle. They have long been catalogued with corresponding mitigating
solutions called refactoring operations. Objective: This SLR has a twofold
goal: the first is to identify the main code smells detection techniques and
tools discussed in the literature, and the second is to analyze to which extent
visual techniques have been applied to support the former. Method: Over 83
primary studies indexed in major scientific repositories were identified by our
search string in this SLR. Then, following existing best practices for
secondary studies, we applied inclusion/exclusion criteria to select the most
relevant works, extract their features and classify them. Results: We found
that the most commonly used approaches to code smells detection are
search-based (30.1%), and metric-based (24.1%). Most of the studies (83.1%) use
open-source software, with the Java language occupying the first position
(77.1%). In terms of code smells, God Class (51.8%), Feature Envy (33.7%), and
Long Method (26.5%) are the most covered ones. Machine learning techniques are
used in 35% of the studies. Around 80% of the studies only detect code smells,
without providing visualization techniques. In visualization-based approaches
several methods are used, such as: city metaphors, 3D visualization techniques.
Conclusions: We confirm that the detection of CS is a non trivial task, and
there is still a lot of work to be done in terms of: reducing the subjectivity
associated with the definition and detection of CS; increasing the diversity of
detected CS and of supported programming languages; constructing and sharing
oracles and datasets to facilitate the replication of CS detection and
visualization techniques validation experiments.Comment: submitted to ARC